package de.fhl.main;

/**
 * Ueberschrift:  OnlineWahl
 * Copyright:     Copyright (c) 2010 
 * Organisation:  FH Luebeck - Virtuelle FH
 */

import de.fhl.model.AuswertungWahl;
import de.fhl.model.WaehlerStateContext;
import de.fhl.view.LoginKonsole;
import de.fhl.view.WahlzettelKonsole;

/**
 * Diese Klasse ist zur Nutzung der Online-Wahl als Konsolenanwendung<br>
 * 
 * @author Achim Krumrein (krumreia@stud.fh-luebeck.de)
 * @author Thomas Weber (webertho@googlemail.de)
 * @version 1.0
 */
public class StartOnlineWahlKonsole {

	/**
	 * Methodenname: main
	 * @param args
	*/
	public static void main(String[] args) {
		
		
		AuswertungWahl Wahltag = new AuswertungWahl();	
		WaehlerStateContext sc = new WaehlerStateContext(); 
		
		String[] RueckgabeLogin = { null, null} ;		
		String Name = null;
		int Wahlkreis = 0;
		
		String Erststimme = null;
		String Zweitstimme = null;
		
		System.out.println("\n--- Willkommern zur OnlineWahl Konsolenanwendung ---\n");
		
		// /F10/ Verifizierung Wahltag
		if (Wahltag.testeWahltag()) {		
			
			// /F30/ Verifizierung der Wahlberechtigung
			System.out.println("\n\nBitte verifizieren Sie sich zuerst am System, Ihre Login ID sollten Sie per Mail erhalten haben...\n");
									
			LoginKonsole KonsoleLogin = new LoginKonsole();
			RueckgabeLogin = KonsoleLogin.Ausgabe();
			
			Name = RueckgabeLogin[0];
			Wahlkreis = Integer.parseInt(RueckgabeLogin[1]);
			
			if (Name != null && Wahlkreis != 0){
				
				// Status setzen "Berechtigt"
				sc.changeState(Name);
				
				// /F40/ Online-Stimmzettel erstellen
				// /F50/ Stimmzettel verifizieren
				System.out.println("\n\n\nAlles klar, Sie dürfen wählen... ich generiere den Wahlzettel fuer Sie...\n");
				
				// Status setzen "WahlOffen"
				sc.changeState(Name);
				
				WahlzettelKonsole KonsoleWahl = new WahlzettelKonsole();
				KonsoleWahl.Ausgabe(Wahlkreis);
				
				// /F70/ Wahlergebnis erstellen
				// Ergebnis in Datenbank übertragen
				AuswertungWahl database = new AuswertungWahl();
				database.ergebnisInDatenbank(Erststimme, Zweitstimme, Wahlkreis);

				// Status setzen "Gewaehlt"
				sc.changeState(Name);
				
				
			}
			else {
				// nicht Wahlberechtigt
				System.out.println("Sie haben keine Berechtigung Online zu wählen, bitte begeben Sie sich in das auf Ihren Wahlunterlagen angegebene Wahllokal. \nAnwendung beendet.");
			}
			
			

		}
		else
		{
			// kein Wahltag
			System.out.println("Sie können nur während der Öffnungszeiten der Wahllokale Ihre Stimme abgeben. \nBitte starten Sie die Anwendung erneut in diesem Zeitraum.\nDie Anwendung wurde beendet.");
		}
	}


}
